Use get_file_info() rather than trying get_folder() and checking for an
authorMatthias Clasen <mclasen@redhat.com>
Wed, 25 Aug 2004 16:59:57 +0000 (16:59 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Wed, 25 Aug 2004 16:59:57 +0000 (16:59 +0000)
2004-08-25  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkfilechooserdefault.c (check_is_folder): Use get_file_info() rather
than trying get_folder() and checking for an error directly because older
versions of the gnome-vfs backend don't return an error
immediately.  (#150852, Zack Cerza )

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkfilechooserdefault.c

index 4d594b99a6be38338e18d40f8040d42b95c55503..3c437a2b5973ccd4cfb84003d4203b2e256b61dd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2004-08-25  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkfilechooserdefault.c (check_is_folder): Use get_file_info() rather 
+       than trying get_folder() and checking for an error directly because older 
+       versions of the gnome-vfs backend don't return an error 
+       immediately.  (#150852, Zack Cerza )
+
 2004-08-25  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Post-release version bump.
index 4d594b99a6be38338e18d40f8040d42b95c55503..3c437a2b5973ccd4cfb84003d4203b2e256b61dd 100644 (file)
@@ -1,3 +1,10 @@
+2004-08-25  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkfilechooserdefault.c (check_is_folder): Use get_file_info() rather 
+       than trying get_folder() and checking for an error directly because older 
+       versions of the gnome-vfs backend don't return an error 
+       immediately.  (#150852, Zack Cerza )
+
 2004-08-25  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Post-release version bump.
index 4d594b99a6be38338e18d40f8040d42b95c55503..3c437a2b5973ccd4cfb84003d4203b2e256b61dd 100644 (file)
@@ -1,3 +1,10 @@
+2004-08-25  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkfilechooserdefault.c (check_is_folder): Use get_file_info() rather 
+       than trying get_folder() and checking for an error directly because older 
+       versions of the gnome-vfs backend don't return an error 
+       immediately.  (#150852, Zack Cerza )
+
 2004-08-25  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Post-release version bump.
index 4d594b99a6be38338e18d40f8040d42b95c55503..3c437a2b5973ccd4cfb84003d4203b2e256b61dd 100644 (file)
@@ -1,3 +1,10 @@
+2004-08-25  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkfilechooserdefault.c (check_is_folder): Use get_file_info() rather 
+       than trying get_folder() and checking for an error directly because older 
+       versions of the gnome-vfs backend don't return an error 
+       immediately.  (#150852, Zack Cerza )
+
 2004-08-25  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Post-release version bump.
index a3eb5b5a9bfbf771d63e4105435878d8b88da6a3..2163a7a8322ad239d1e0d05d87195e4e91263f95 100644 (file)
@@ -996,22 +996,6 @@ shortcuts_find_current_folder (GtkFileChooserDefault *impl)
   gtk_tree_path_free (path);
 }
 
-/* Returns whether a path is a folder */
-static gboolean
-check_is_folder (GtkFileSystem *file_system, const GtkFilePath *path, GError **error)
-{
-  GtkFileFolder *folder;
-
-  folder = gtk_file_system_get_folder (file_system, path,
-                                      GTK_FILE_INFO_DISPLAY_NAME,
-                                      error);
-  if (!folder)
-    return FALSE;
-
-  g_object_unref (folder);
-  return TRUE;
-}
-
 /* Convenience function to get the display name and icon info for a path */
 static GtkFileInfo *
 get_file_info (GtkFileSystem *file_system, const GtkFilePath *path, gboolean name_only, GError **error)
@@ -1041,6 +1025,41 @@ get_file_info (GtkFileSystem *file_system, const GtkFilePath *path, gboolean nam
   return info;
 }
 
+/* Returns whether a path is a folder */
+static gboolean
+check_is_folder (GtkFileSystem *file_system, const GtkFilePath *path, GError **error)
+{
+  GtkFileInfo *info;
+  gboolean is_folder;
+
+  /* Use get_file_info() rather than trying get_folder() and checking
+   * for an error directly because older versions of the gnome-vfs
+   * backend don't return an error immediately. This way is also
+   * more efficient if we already have the parent folder. 
+   */
+  info = get_file_info (file_system, path, FALSE, error);
+  
+  if (!info)
+    return FALSE;
+  
+  is_folder = gtk_file_info_get_is_folder (info);
+  gtk_file_info_free (info);
+
+  if (!is_folder)
+    {
+      g_set_error (error,
+                  GTK_FILE_SYSTEM_ERROR,
+                  GTK_FILE_SYSTEM_ERROR_NOT_FOLDER,
+                  "%s: %s", 
+                  gtk_file_info_get_display_name (info),
+                  g_strerror (ENOTDIR));
+
+      return FALSE;
+    }
+
+  return TRUE;
+}
+
 /* Inserts a path in the shortcuts tree, making a copy of it; alternatively,
  * inserts a volume.  A position of -1 indicates the end of the tree.
  */